namespace CSharpPro._1016;

public class Demo
{ 
    // 1. 三个整数排序
    public void Test1()
    {
        Console.WriteLine("=== 三个整数排序 ===");
        Console.Write("请输入第一个整数：");
        int x = int.Parse(Console.ReadLine());
        Console.Write("请输入第二个整数：");
        int y = int.Parse(Console.ReadLine());
        Console.Write("请输入第三个整数：");
        int z = int.Parse(Console.ReadLine());
        
        int[] nums = { x, y, z };
        Array.Sort(nums);
        Console.WriteLine($"从小到大排序后的结果：{string.Join(", ", nums)}");
        Console.WriteLine();  
    }
// 2. 1-100符合条件的数及求和
    public void Test2()
    {
        Console.WriteLine("=== 1-100符合条件的数及求和 ===");
        int sum = 0;
        for (int i = 1; i <= 100; i++)
        {
            if (i % 7 != 0 && !i.ToString().Contains('7'))
            {
                Console.Write(i + " ");
                sum += i;
            }
        }
        Console.WriteLine($"\n这些数的和为：{sum}");
        Console.WriteLine();  
    }
// 3. 打印九九乘法表
    public void Test3()
    {
        Console.WriteLine("=== 九九乘法表 ===");
        for (int i = 1; i <= 9; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write($"{j}×{i}={i * j}\t");
            }
            Console.WriteLine();
        }
        Console.WriteLine();  
    }
// 4. 求1000以内的完数 
    public void Test4()
    {
        Console.WriteLine("=== 1000以内的完数 ===");
        for (int num = 1; num <= 1000; num++)
        {
            List<int> factors = new List<int>();
            for (int i = 1; i < num; i++)
            {
                if (num % i == 0)
                {
                    factors.Add(i);
                }
            }
            if (factors.Sum() == num)
            {
                Console.WriteLine(num);
            }
        }
        Console.WriteLine();   
    }
// 5. 正整数的位数及逆序打印
    public void Test5()
    {
        Console.WriteLine("=== 正整数的位数及逆序打印 ===");
        Console.Write("请输入一个正整数：");
        int number = int.Parse(Console.ReadLine());
        string numStr = number.ToString();
        Console.WriteLine($"这个数的位数：{numStr.Length}");
        char[] charArray = numStr.ToCharArray();
        Array.Reverse(charArray);
        Console.WriteLine($"逆序后的数字：{new string(charArray)}");
        Console.WriteLine();   
    }
// 6. 打印菱形
    public void Test6()
    {
        Console.WriteLine("=== 打印菱形 ===");
        Console.Write("请输入菱形的行数（奇数）：");
        int rows = int.Parse(Console.ReadLine());
        if (rows % 2 == 0)
        {
            Console.WriteLine("请输入奇数！");
        }
        else
        {
            // 上半部分
            for (int i = 0; i <= rows / 2; i++)
            {
                Console.Write(new string(' ', rows / 2 - i));
                Console.WriteLine(new string('*', 2 * i + 1));
            }
            // 下半部分
            for (int i = rows / 2 - 1; i >= 0; i--)
            {
                Console.Write(new string(' ', rows / 2 - i));
                Console.WriteLine(new string('*', 2 * i + 1));
            }
        }
        Console.WriteLine();   
    }
}